﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TVH.Web.Code;
using TVH.Comum;

namespace TVH.Cadastro
{
    public partial class ListaPredio : BasePage
    {
        Persistencia.PerPredio persistencia = new Persistencia.PerPredio();
        Persistencia.PerEstado perEstado = new Persistencia.PerEstado();
        protected void Page_Load(object sender, EventArgs e)
        {
            CarregarGrid();
            if (!IsPostBack)
            {
                CarregarCombos();
            }
            if (!IsPostBack) return;
        }

        private void CarregarCombos()
        {
            ddlEstado.DataSource = perEstado.ObterLista();
            ddlEstado.DataTextField = "Descricao";
            ddlEstado.DataValueField = "Sigla";
            ddlEstado.DataBind();
        }


        public void btnBuscar_Click(object sender, EventArgs e)
        {
            CarregarGrid();
        }

        public void gridResultado_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            (sender as GridView).PageIndex = e.NewPageIndex;
            (sender as GridView).DataBind();
        }

        public void gridResultado_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var link = e.Row.FindControl("lnkExcluir");
                ((LinkButton)link).Attributes.Add("onclick", "javascript:return confirm('Confirmar exclusão?')");
            }
        }

        public void gridResultado_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                persistencia.Excluir(new Entidade.Predio() { Id = Convert.ToInt32(((GridView)sender).DataKeys[e.RowIndex].Value) });
                CarregarGrid();
                ExibirMensagemSucesso("Prédio excluído com sucesso!");
            }
            catch (Exception ex)
            {
                ExibirMensagemErro("Erro ao excluir prédio!", ex);
            }
        }


        public void gridResultado_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            hdnGridAction.Value = "Detalhar";
            hdnID.Value = ((GridView)sender).DataKeys[e.NewSelectedIndex].Value.ToString();
            Server.Transfer("~/Cadastro/Predio.aspx", true);
        }


        public void gridResultado_RowEditing(object sender, GridViewEditEventArgs e)
        {
            hdnGridAction.Value = "Editar";
            hdnID.Value = ((GridView)sender).DataKeys[e.NewEditIndex].Value.ToString();
            Server.Transfer("~/Cadastro/Predio.aspx", true);
        }

        private void CarregarGrid()
        {
            var result = persistencia.ObterLista(new Entidade.Predio()
            {
                Identificacao = txtDescricao.Text,
                Estado = ddlEstado.SelectedValue == "0" ? null
                        : ddlEstado.SelectedValue
            });
            result = result.OrderBy(x => x.Estado).ThenBy(x => x.Identificacao).ToList();
            gridResultado.DataSource = result;
            gridResultado.DataBind();
        }
    }
}